/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ch.easer.zlv.jsf;

import ch.easer.zlv.ZahlungFacade;
import ch.easer.zlv.entity.Zahlung;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import org.primefaces.model.chart.PieChartModel;

/**
 *
 * @author easy
 */
@RequestScoped
@ManagedBean
public class ChartBean implements Serializable {

    private PieChartModel pieModel;
    @EJB
    private ZahlungFacade zahlungPartnerFacade;

    @PostConstruct
    public void init() {
        System.out.println("new BEAN:" + ChartBean.class.getName() + "__" + this.hashCode());
        createPieModel();
    }

    public PieChartModel getPieModel() {
        return pieModel;
    }
    
    public void setPieModel(PieChartModel pieModel) {
        this.pieModel = pieModel;
    }
    /**
     * Die Beträge der jeweils gleichen Empfänger werden addiert
     * und in das PieChartModel geschrieben. Damit werden die 
     * Empfänger zu Kategorien.
     * @return  PieChartModel
     */
    public PieChartModel createPieModel() {
        Map<String, Double> map = new HashMap<String, Double>();
        for (Zahlung zahlung : zahlungPartnerFacade.findAll()) {
            if (map.containsKey(zahlung.getEmpfaenger())) {
                Double sum = map.get(zahlung.getEmpfaenger()) + zahlung.getBetragMonat();
                map.put(zahlung.getEmpfaenger(), sum);
            } else {
                map.put(zahlung.getEmpfaenger(), zahlung.getBetragMonat());
            }
        }
        pieModel = new PieChartModel();      
        for (Map.Entry<String, Double> entry : map.entrySet()) {
            pieModel.getData().put(entry.getKey(), entry.getValue());
        }
        return pieModel;
    }  
}
            
